﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using Microsoft.Reporting.WebForms;
using validarDatos;


public partial class Stdby_Reportes_ordenesTrabajo : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        //Declaramos un StringBuilder para almacenar el alert que queremos mostrar
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        //Aperturamos la escritura de Javascript
        sbMensaje.Append("<script type='text/javascript'>");
        //Le indicamos al alert que mensaje va mostrar
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        //Cerramos el Script
        sbMensaje.Append("</script>");
        //Registramos el Script escrito en el StringBuilder
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }



    /*---------------------------------------------------------*/


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargarComboIdOt();
        }
    }



    private void cargarComboIdOt()
    {
        try
        {
            string consulta = "SELECT 0 AS Id, '' AS IdOt UNION SELECT Id, CONVERT(VARCHAR(MAX), Id) As IdOt FROM OTCab";

            SqlDataAdapter daElemento = new SqlDataAdapter(consulta, CCadenaConexionSql.cadConexion());

            DataSet dsElemento = new DataSet();

            daElemento.Fill(dsElemento);

            ddlIdOt.DataSource = dsElemento.Tables[0].DefaultView;
            // Asigna el valor a mostrar en el DropDownList
            ddlIdOt.DataTextField = "IdOt";
            // Asigna el valor del value en el DropDownList
            ddlIdOt.DataValueField = "Id";
            // Llena el DropDownList con los datos
            ddlIdOt.DataBind();
        }
        catch { }
    }



    /*mostrar reporte*/

    protected void btnMostrarReporte_Click(object sender, EventArgs e)
    {

        lblFechaDesde.Visible = false;
        lblFechaHasta.Visible = false;

        txtFechaDesde.ToolTip = null;
        txtFechaHasta.ToolTip = null;

        bool bandera = true;

        if (!String.IsNullOrEmpty(txtFechaDesde.Text.Trim()))
        {
            if (!CValidaDatos.validaFecha(txtFechaDesde.Text))
            {
                txtFechaDesde.ToolTip = CMensajes.mensajeValidaFecha();
                lblFechaDesde.Visible = true;
                bandera = false;
            }
        }
        else
        {
            txtFechaDesde.ToolTip = "Ingrese una fecha.";
            lblFechaDesde.Visible = true;
            bandera = false;
        }

        if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
        {
            if (!CValidaDatos.validaFecha(txtFechaHasta.Text))
            {
                txtFechaHasta.ToolTip = CMensajes.mensajeValidaFecha();
                lblFechaHasta.Visible = true;
                bandera = false;
            }
        }

        if (bandera)
        {
            ReportViewer1.Visible = true;
            reporte();
        }
        else
        {
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.Visible = false;
        }
    }

    private void reporte()
    {
        try
        {

            ReportDataSource rds = new ReportDataSource();

            rds.Name = "dsOrdenesTrabajo";//datset del .rdlc
            rds.Value = darDataSet().Tables[0];

            // Donde fvFact es el control de ReportViewer de la página.
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.LocalReport.DataSources.Add(rds);
            ReportViewer1.LocalReport.ReportPath = Server.MapPath("ordenesTrabajo.rdlc");


            //asigno parametros al reporte

            ReportViewer1.LocalReport.SetParameters(new ReportParameter("FDesde", txtFechaDesde.Text.Trim()));

            if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
            {
                ReportViewer1.LocalReport.SetParameters(new ReportParameter("FHasta", txtFechaHasta.Text.Trim()));
            }
            else
            {
                ReportViewer1.LocalReport.SetParameters(new ReportParameter("FHasta", DateTime.Now.ToShortDateString().Trim()));
            }


            ReportViewer1.LocalReport.Refresh();


        }
        catch{}


    }



    private DataSet darDataSet()
    {
        DataSet myDS = new DataSet();

        using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
        {
            try
            {

                SqlCommand MyCommand = new SqlCommand();
                MyCommand.Connection = objConexion;
                MyCommand.CommandType = CommandType.StoredProcedure;
                MyCommand.CommandText = "Reporte_OrdenesDeTrabajo";

                MyCommand.Parameters.Clear();


                if (!String.IsNullOrEmpty(ddlIdOt.SelectedItem.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@NroOT", ddlIdOt.SelectedValue.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@NroOT", null);

                }

                if (!String.IsNullOrEmpty(txtFechaDesde.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@FDesde", txtFechaDesde.Text.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@FDesde", null);
                }

                if (!String.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
                {
                    MyCommand.Parameters.AddWithValue("@FHasta", txtFechaHasta.Text.Trim());
                }
                else
                {
                    MyCommand.Parameters.AddWithValue("@FHasta", null);
                }


                SqlDataAdapter MyDA = new SqlDataAdapter();
                MyDA.SelectCommand = MyCommand;

                if (objConexion.State == ConnectionState.Closed)
                { objConexion.Open(); }

                MyDA.Fill(myDS, "dsOrdenesTrabajo");


            }
            catch { }

            if (objConexion.State == ConnectionState.Open)
            { objConexion.Close(); }

            objConexion.Dispose();
        }

        return myDS;
    }

}